using System;
using UnityEngine;

namespace model.entity
{
    [Serializable]
    public class BulletData
    {
        // 子弹基础属性
        public string id;                      // 子弹唯一标识符(英文)
        public string name;                    // 子弹显示名称(中文)
    
        // 子弹性能参数
        public float damage;                   // 基础伤害值
        public float speed;                    // 飞行速度(游戏单位/秒)
        public float size;                     // 碰撞体大小(半径)
        public int penetration;                // 穿透次数(0=不穿透，1=穿透1次，依此类推)
        public float explosionRadius;          // 爆炸半径(0=不爆炸)
    
        // 资源路径
        public string spritePath;              // 子弹图片资源路径
        public string hitEffectPath;           // 击中特效预制体路径
    
        // 运行时加载的资源(不序列化到JSON)
        [NonSerialized] public Sprite sprite;  // 加载后的子弹图片
        [NonSerialized] public GameObject hitEffectPrefab; // 加载后的击中特效预制体
    
        /// <summary>
        /// 加载子弹所需的资源(图片和特效)
        /// </summary>
        public void LoadResources()
        {
            // 从Resources文件夹加载子弹图片
            sprite = Resources.Load<Sprite>(spritePath);
        
            // 从Resources文件夹加载击中特效
            hitEffectPrefab = Resources.Load<GameObject>(hitEffectPath);
        
            // 可以在这里添加资源加载失败的日志记录
            if(sprite == null) Debug.LogWarning($"无法加载子弹图片: {spritePath}");
            if(hitEffectPrefab == null) Debug.LogWarning($"无法加载击中特效: {hitEffectPath}");
        }
    
        /// <summary>
        /// 判断是否是爆炸型子弹
        /// </summary>
        public bool IsExplosive()
        {
            return explosionRadius > 0;
        }
    
        /// <summary>
        /// 判断子弹是否有穿透能力
        /// </summary>
        public bool CanPenetrate()
        {
            return penetration > 0;
        }
    }
}